查看原文
其他

Windows内壳驱动攻击 (Pt. 1) - 环境搭建

2017-09-22 wx_rd.cheung 看雪学院


这是接下来一系列关于通过驱动漏洞进行Windows内核驱动攻击里的第一部篇。


在这个项目里我将会使用的带漏洞驱动是 HackSys Extreme Vulnerable Driver你可以写一系列的基于 IOCTL 的攻击。


这个驱动可以下载x86和amd64两个已编译版本。这篇文章中我将使用x86版本, 因为会更好理解。


为了热插拔加载驱动到Windows里,HackSys推荐使用OSR Driver Loader



虚拟机通信设置




我的操作系统是Linux,所以我无法在我的电脑上跑WinDbg来与win7虚拟机通信。


所以我最后设置了两个虚拟机(均使用相同的Win7 Sp1 x86 镜像)。然后我使用Virtual Box来在我的Linux上设置了一个文件,我通过这个文件来建立两个虚拟机之间的通信。


在虚拟机电源关闭的情况下,我设置了第一个虚拟机的Serial Port。这个虚拟机将被用于运行WinDbg的调试。




第二个用于安装HackSys驱动的虚拟机的设置和第一个类似。




这样,两个虚拟机间通过/tmp/win_link的通信就完成了!



虚拟机调试设置




现在虚拟机配置好了,我们要做些设置来让通信运行起来。


打开用于调试的虚拟机并且安装WinDbg。完成后我们需要设置环境变量来告诉WinDbg内核符号的来源。设置_NT_SYMBOL_PATH环境变量到https://msdl.microsoft.com/download/symbols。搞定!


现在打开被攻击的虚拟机,我们需要打开Windows调试启动的选项。

首先我们到command prompt里把现在的启动设置复制到一个我们将编辑的新入口:

bcdedit /copy {current} /d "Debug"


这个命令会产出一个我们将要用于引用新的调试选项的GUID。现在我们开通启动选项的调试模式。

bcdedit /debug <GUID> on


搞定!我们在这个虚拟机上现在拥有一个打开了调试选项的开机设置,它将会通过我们的通信文件传递信息给用于调试的虚拟机。


现在我们回到用于调试的虚拟机并打开WinDbg。去到File -> Kernel Debug并输入115200来进行通信,使用com1当接口。




重启被攻击的虚拟机,并在启动菜单里选择“Debug”。让他进入到桌面,之后通过选择Debug -> Break 在WinDbg里创建一个中断使被调试的Windows虚拟机中断。如果WinDbg给你一个kd> 命令行,并且被攻击的虚拟机卡住了,那恭喜你,成功中断了!





安装HackSys驱动





现在虚拟机已经被设置成可以调试,我们将要把HackSys驱动装到被攻击的虚拟机来攻击他。


驱动默认使不会很多调试信息,所以我们要打开这些调试信息。


当虚拟机被中断时,我们可以通过以下命令来改变WinDbg里的 Default Mask。


ed nt!Kd_Default_Mask 8


你可以通过在kd> 里输入 g 来继续虚拟机的运行。我们将这样做,进而安装驱动。


假设你已经有了一开头我提到的那些驱动以及安装程序,我们就可以开始装驱动了。打开OSR你可以设置浏览到驱动路径并且让服务自动开启,然后注册这个服务。当注册完成直接开始服务。




做了这些以后,WinDbg会有些调试的信息。




现在驱动安装好了并且在运行了,我们将安装HackSys驱动的符号,这样WinDbg才可以更有用。


我们可以通过以下命令在WinDbg里找到HEVD模块




最后一行就是HEVD驱动,deferred代表WinDbg没有加载任何符号。


我们可以通过以下命令打开路径调试信息来找到放HEVD的pdb的位置:


1: kd> !sym noisy

noisy mode - symbol prompts on


尝试打印全部HEVD的函数,我们可以找到Windbg需要我们放HEVD pdb文件的位置。


如果它没法在线找到,第二选择就是这个地方C:\ProgramData\dbg\sym\HEVD.pdb\D241CC04CE0B472CB88B1476958369FB1\HEVD.pdb.

在调试的虚拟机上存个和你的驱动版本相同的pdb文件并且运行.reload来重新加载符号。所以你现在可以运行:


来得到所有HEVD里的符号。成功!



测试驱动





最终我们可以测试已经写好的驱动攻击来确保所有的东西正常运行,然后编写我们自己的攻击。




它可以通过pool overflow攻击来使用系统权限打开cmd.exe。准备完毕,下一个阶段,让我们开始逆向吧!





本文由看雪论坛 wx_rd.cheung 原创

转载请注明来自看雪社区

热门阅读


点击阅读原文/read,

更多干货等着你~


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存